package org.zhao.nettydemos.lab04;

/**
 * @Auther: xiaohui.zhao
 * @Date: 2021/9/17 15:02
 * @Description: 任务执行类
 *
 * 在此类中定义一个回调接口类型的成员变量和一个String类型的任务参数
 * （模拟任务的参数），并在构造方法中注入回调接口和任务参数。在run方法中执行任务，任务完成后将任务的结果数据封装成
 * TaskResult对象，调用回调接口的方法将TaskResult对象传递到回调方法中
 *
 */
public class TaskExecutor implements Runnable{

    private TaskCallable<TaskResult> taskCallable;
    private String taskParameter; // 任务参数

    public TaskExecutor(TaskCallable<TaskResult> taskCallable,String taskParameter){
        this.taskCallable = taskCallable;
        this.taskParameter = taskParameter;
    }

    @Override
    public void run() {
        // 做业务逻辑 ， 将结果封装成TaskResult对象并返回

        for(int i = 0;i<100;i++){
            System.out.println(i);
        }

        TaskResult taskResult = new TaskResult();
        taskResult.setTaskStatus(1);
        taskResult.setTaskMessage(this.taskParameter);
        taskResult.setTaskResult("异步回调成功");
        taskCallable.callable(taskResult);
    }
}